/**
 * fetch网络请求的简单封装
 * Created by 10691 on 17/5/12.
 */
export default class HttpUtils {

    /**
     * get请求
     * @param url url地址
     * @param params 参数
     * @param headers
     */
    static get(url, params, headers) {
        if (params) {
            let paramsArray = [];
            // 获取params内所有的key
            let paramsKeyArray = Object.keys(params);
            // 通过 forEach 方法拿到数组中每个元素,将元素与参数的值进行拼接处理,并且放入 paramsArray 中
            paramsKeyArray.forEach(key => paramsArray.push(key + '=' + params[key]));

            // Url的拼接
            if (url.search(/\?/ === -1)) {
                url += '?' + paramsArray.join('&');
            } else {
                url += paramsArray.join('&');
            }
        }

        return new Promise(function (resolve, reject) {
            fetch(url, {
                method: 'GET',
                header: headers
            }).then((response) => response.json()).then((response) => {
                resolve(response)
            }).catch((error) => {
                reject({status: -1})
            }).done();
        });
    }

    /**
     * Post请求
     * @param url url地址
     * @param params 参数
     * @param headers
     */
    static post(url, params, headers) {
        if (params) {
            // 初始化formData
            let formData = new FormData();
            // 获取params内所有的key
            let paramsKeyArray = Object.keys(params);
            // 通过 forEach 方法拿到数组中每个元素,将元素与参数的值进行拼接处理,并且放入 paramsArray 中
            paramsKeyArray.forEach(key => formData.append(key + '=' + params[key]));
        }

        return new Promise(function (resolve, reject) {
            fetch(url, {
                method: 'POST',
                header: headers,
                body: formData,
            }).then((response) => response.json()).then((response) => {
                resolve(response)
            }).catch((error) => {
                reject({status: -1})
            }).done();
        });
    }
}